home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / program / gfxstf13.lha / egs.i < prev    next >
Text File  |  1995-06-06  |  22KB  |  606 lines

  1.       IFND            EGS_EGS_I
  2. EGS_EGS_I       SET     1
  3. *\
  4. *
  5. *  $
  6. *  $ FILE     : egs.i
  7. *  $ VERSION  : 1
  8. *  $ REVISION : 37
  9. *  $ DATE     : 21-Mar-95 18:36
  10. *  $
  11. *  $ Author   : mvk
  12. *  $
  13. *
  14. *
  15. * (c) Copyright 1990/93 VIONA Development
  16. *     All Rights Reserved
  17. * Revision 36 modified by S.P. Häuser
  18. * Modified : E_EBitmap, E_EScreen, E_HardInfo,E_ScreenMode
  19. * New      : E_EMinMax, E_EMouseImg, E_MonitorSpec, E_DisplayDriver
  20. * ... because Viona seemed not to be capable to do this themselves...
  21. * The modified structures SHOULD now be V.6 compatible, i really HOPE
  22. * they do not CHANGE anything in this structures in future releases ...
  23. *
  24. *\
  25.         IFND    EXEC_TYPES_I
  26.         INCLUDE "exec/types.i"
  27.         ENDC
  28.         IFND    EXEC_PORTS_I
  29.         INCLUDE "exec/ports.i"
  30.         ENDC
  31.  
  32. *
  33. *  This library is the basic interface to high resolution graphics cards.
  34. *  The hardware is almost completely encapsulated by this module. It is
  35. *  not allowed to access hardware registers directly.
  36. *
  37. *  The library is designed for full multitasking support. Thus several
  38. *  programs can use the graphics card simultaneously.  Screens can be
  39. *  switched like Intuition screens by pressing the left Amiga key and "S".
  40. *
  41. *  Moreover, a separate mouse pointer is supported.  The Amiga mouse and
  42. *  EGS mouse can be exchanged by pressing the left Amiga key and "A".
  43. *  If the mouse pointer is on the EGS screen, all key codes are redirected
  44. *  to the screen, too.
  45. *
  46. *  EGS screens have a message system on their own so that applications with
  47. *  input processing can lack any window without losing multitasking
  48. *  capabilities.
  49. *
  50.  
  51. *
  52. *  EMemNode, EMemPtr
  53. *
  54. *  Graphics memory on the card is allocated by the procedure AllocEMem.
  55. *  The memory segments are held in EMemNode list structures.  As graphics
  56. *  cards use almost only big consecutive segments, the EGS libraries possess
  57. *  memory management that can move memory in its address location.  To
  58. *  inhibit memory running away while being used, the EMemNode must be locked
  59. *  by incrementing "lock", e.g. when loading "dest" into any address register.
  60. *  "lock" must be decremented after memory access.  The address of the
  61. *  allocated graphics memory is located in the "dest" field.
  62. *  Only the fields "dest" and "lock" are public, all other fields are
  63. *  strictly private.  Example:
  64. *
  65. *  EMemNode mem;
  66. *  ...
  67. *  mem.lock++;               now mem.dest may be used
  68. *  mem.dest = $AA;
  69. *  ...(further memory accesses)...
  70. *  mem.lock--;               now mem.dest may not be used any longer
  71. *
  72.  
  73. * To access the "lock" component, you would have to use
  74. *   "mynode.lock.false.lock", which is simply disgusting !
  75. *
  76. * struct E_EMemNode {
  77. *                        APTR Dest;
  78. *                        union {
  79. *                               struct {
  80. *                                       BYTE Lock;
  81. *                                       UBYTE Display;
  82. *                                       } false;
  83. *                               struct {
  84. *                                       UWORD Moveable;
  85. *                                       } true;
  86. *                               } Lock;
  87. *
  88. *                       UWORD Pad_1;
  89. *                       LONG Size;
  90. *                       APTR Next, Prev;
  91. *                  };
  92. *
  93. *   But as "moveable" is private to the EGS library, I just ignore the
  94. *   memory variation.  If you want to test for moveable then test both
  95. *   "lock" and "display".
  96. *
  97.  STRUCTURE  E_EMemNode,0
  98.         APTR    emn_Dest
  99.         BYTE    emn_Lock
  100.         UBYTE   emn_Display
  101.         UWORD   emn_Pad_1
  102.         LONG    emn_Size
  103.         APTR    emn_Next
  104.         APTR    emn_Prev
  105.         LABEL   emn_SIZEOF
  106.  
  107. *
  108. *  EViewPtr
  109. *
  110. *  Opaque access to a view mode which contains only internal data that is
  111. *  not exported for reasons of compatibility.
  112. *
  113.  
  114. *
  115. *  CLUEntry, CLU, CLUPtr
  116. *
  117. *  The colour lookup table.  The range of a colour component red, green or
  118. *  blue is 0 to 255, which means all 8 bits are used.  The number of necessary
  119. *  table entries depends on the selected screen depth.  If the CLUT is too
  120. *  short, the missing colours are selected by random.  If no CLUT is
  121. *  specified, a standard CLUT is generated.
  122. *
  123.  STRUCTURE  E_CLUEntry,0
  124.         UBYTE   ece_Red
  125.         UBYTE   ece_Green
  126.         UBYTE   ece_Blue
  127.         UBYTE   ece_Dummy
  128.         LABEL   ece_SIZEOF
  129.  
  130. *
  131. *  EBitMapPtr, EBitMap
  132. *
  133. *  Basic structure for management of graphics memory.
  134. *
  135. *  As different graphic boards exist which have different memory organisations
  136. *  the egs libraries offer several different bitmap types.
  137. *
  138. *  These are the fields that have the same meaning in any bitmap:
  139. *
  140. *   .Width       : Pixel Width.
  141. *   .Height      : Pixel Height.
  142. *   .BytesPerRow : Number of bytes per row.
  143. *   .Depth       : Number of bits for one pixel; though in 24 bit mode (real)
  144. *                  the number 24 is contained herein, always 32 bits (one
  145. *                  long word) are used.
  146. *
  147. *   .Type        : type of bitmap.
  148. *
  149. *  The different types are:
  150. *
  151. *   E_PIXELMAP      : The memory format is chunky which means that the bits that
  152. *                     build up one pixel lay in adjacent memory locations.
  153. *                     E.g. 2 bits : aabbccdd eeffgghh iijjkkll ...
  154. *                     The organisation in 24 bit is RGBx. This is the native egs
  155. *                     bitmap type. You can allways get an map of these type in
  156. *                     24 bits. The functions in egsblit are allways able to work
  157. *                     with this bitmap and convert from and to other 24 bit
  158. *                     formats, or to other bit depths.
  159. *                     The real location in memory is
  160. *
  161. *                             ..->Typekey.PixelMap.Planes.Dest
  162. *
  163. *                     The memory has to be locked before it is accessed or the
  164. *                     pointer to it, as the libraries are able to move parts
  165. *                     of the graphicsmemory to gain longer fragments.
  166. *                     To lock increment the lock field, to unlock decrement it
  167. *                     again. This lock does not guarantee exclusive access, it
  168. *                     only guarantees, that the bitmap ist not moved.
  169. *
  170. *   E_PIXLACEMAP    : Some graphicsboards have in interlaced an splitted memory
  171. *                     which means that the odd and the even field of the display
  172. *                     reside in different memory locations. The format is the
  173. *                     same as E_pixelMap, with one exception. The even lines
  174. *                     are in one block and the odd lines are in one block. The
  175. *                     starting location of the odd field is
  176. *
  177. *                       ..->Typekey.PixelMap.Planes.Dest+
  178. *                        ..->Typekey.PixelMap.IntDisp
  179. *
  180. *   E_BITPLANEMAP   : The bits that build each pixel are spread over several
  181. *                     bitplanes.
  182. *
  183. *   E_USERMAP       : Nothing is known about the structure of the frame store.
  184. *
  185. *   E_PIXELMAP_xRGB : Same as E_PIXELMAP, exept that the format in 24 bit is
  186. *                     xRGB and not RGBx.
  187. *
  188. *  Your programms should be able to handle at least the E_PIXELMAP format. If
  189. *  it can't handle the format it is given, use the routines of the
  190. *  egsblit.library.
  191. *  If you need a bitmap for double buffering you should use the bitmap from
  192. *  your screen as friend bitmap and the flag E_EB_DISPLAYABLE.
  193. *
  194. *
  195.  
  196. *
  197. *
  198. *  Enumeration type for access to union fields
  199. *
  200. *
  201. E_PIXELMAP              EQU     0
  202. E_PIXLACEMAP            EQU     1
  203. E_BITPLANEMAP           EQU     2
  204. E_USERMAP               EQU     3
  205. E_PIXELMAP_xRGB         EQU     4
  206. E_EB_DISPLAYABLE        EQU     1
  207. E_EB_BLITABLE           EQU     2
  208. E_EB_SWAPABLE           EQU     4
  209. E_EB_NOTSWAPABLE        EQU     8
  210. E_EB_CLEARMAP           EQU     16
  211.  
  212.  STRUCTURE  E_EBitMap,0
  213.         WORD    ebm_Width
  214.         WORD    ebm_Height
  215.         UWORD   ebm_BytesPerRow
  216.         BYTE    ebm_Depth
  217.         UBYTE   ebm_Type
  218.  
  219. * Enumeration type descriptor for access to union fields
  220.  
  221.         APTR    ebm_Plane
  222.         BYTE    ebm_Lock
  223.         UBYTE   ebm_Display
  224.         UWORD   ebm_Pad0
  225.         ULONG   ebm_Pad1
  226.  
  227.         STRUCT  ebm_BitPlanes,24*4  ; because Ptr size is 4 Bytes
  228.                                     ; in C BitPlanes[24]
  229.         APTR    ebm_Colors
  230.         ULONG   ebm_Flags
  231.         APTR    ebm_Class
  232.         LABEL   ebm_SIZEOF
  233.  
  234. *
  235. *               union {
  236. *
  237. *                       struct {
  238. *                               struct   E_EMemNode Planes;
  239. *                                ULONG             IntDisp;
  240. *                              } PixelMap;
  241. *
  242. *                       struct {
  243. *                               APTR   BitPlanes [24];
  244. *                              } BitPlaneMap;
  245. *
  246. *                       struct {
  247. *                               APTR   Action;
  248. *                               } UserMap;
  249. *
  250. *                       } Typekey;
  251. *                 };
  252. *
  253.  
  254. * Access example:
  255. *
  256. *    E_EBitMapPtr Ptr;
  257. *    APTR Plane, Otherplane;
  258. *
  259. *    if (Ptr->Type == E_BITPLANEMAP)
  260. *      {
  261. *      Plane = Ptr->Typekey.BitPlaneMap.BitPlanes[someindex];
  262. *      }
  263. *    if (Ptr-Type == E_PIXELMAP)
  264. *      {
  265. *      Otherplane = Ptr->Typekey.PixelMap.Planes.Dest;
  266. *      }
  267. *
  268. *
  269.  
  270. *
  271. *  SoftMousePtr, SoftMouse, HardMousePtr, HardMouse
  272. *
  273. *  Data block for the mouse pointer. Three colours can be used. The bits of
  274. *  a pixel are consecutive as usually, the combination %00 represents a
  275. *  transparent pixel.
  276. *
  277. *  The maximum size of a software mouse pointer is 32 by 32 pixels.  A hard-
  278. *  ware mouse pointer can have up to 64 by 64 pixels but that would exceed
  279. *  the processor capabilities during emulation.
  280. *
  281. *
  282. *  EMouse, EMousePtr
  283. *
  284. *  Definition structure for a mouse pointer.  Each screen can have only one
  285. *  mouse pointer at any moment.  When switching screens, the pointer is
  286. *  changed adequately.  A screen's mouse pointer can be altered by a function
  287. *  at any time.
  288. *
  289. *  For graphics cards without a hardware pointer a pointer is emulated by
  290. *  software.  Specified HardMouse structures are used only if a hardware
  291. *  pointer was implemented, too.  If .soft = NIL then the HardMouse structure
  292. *  is converted into a SoftMouse structure automatically.
  293. *
  294. *   .Color1       : Colour for %01
  295. *   .Color2       : Colour for %10
  296. *   .Color3       : Colour for %11.
  297. *                   These colours are supported only for 4 bit mode and higher.
  298. *   .XSpot,
  299. *   .YSpot        : Displacement of the mouse pointer's click pixel.
  300. *   .Width,
  301. *   .Height       : Width and Height of the SoftMouse.
  302. *   .Soft         : Pointer to SoftMouse structure, should always be initia-
  303. *                   lized for reasons of compatibility.
  304. *   .Hard         : Pointer to HardMouse structure; if you always want to use
  305. *                   the small mouse pointer this field should be NIL.
  306. *
  307. *  Example: The standard mouse pointer.
  308. *
  309. *    StdMouse= EMouse:(Color1=$00000001,Color2=$FF0000FF,Color3=$80000080,
  310. *                      XSpot=1,YSpot=1,Width=25,Height=31,
  311. *                      Soft=SoftMouse:(
  312. *   (%01010101000000000000000000000000,%00000000000000000000000000000000),
  313. *   (%01111111010101010000000000000000,%00000000000000000000000000000000),
  314. *   (%01111010111111110101010100000000,%00000000000000000000000000000000),
  315. *   (%01111111101010101111111101010101,%00000000000000000000000000000000),
  316. *   (%00011111111110101010101011110100,%00000000000000000000000000000000),
  317. *   (%00011111111111111110101011010000,%00000000000000000000000000000000),
  318. *   (%00011111111111111111111101000000,%00000000000000000000000000000000),
  319. *   (%00011111111111111111110100000000,%00000000000000000000000000000000),
  320. *   (%00010111111111111111101101000000,%00000000000000000000000000000000),
  321. *   (%00000111111111111111111011010100,%00000000000000000000000000000000),
  322. *   (%00000111111111111111111110111101,%00000000000000000000000000000000),
  323. *   (%00000111111111011111111111101111,%01000000000000000000000000000000),
  324. *   (%00000101111101010111111111111011,%11010100000000000000000000000000),
  325. *   (%00000001110101010101111111111110,%10111101000000000000000000000000),
  326. *   (%00000001010101010101111111111111,%11101011010000000000000000000000),
  327. *   (%00000001010101010101011111111111,%11111010110101000000000000000000),
  328. *   (%00000001010101010101010111111111,%11111111101111010000000000000000),
  329. *   (%00000001010101010101010101111111,%11111111111101000000000000000000),
  330. *   (%00000001010101010101010101111111,%11111111010100000000000000000000),
  331. *   (%00000000010101010001010101011111,%11111101000000000000000000000000),
  332. *   (%00000000010101000000010101010111,%11110101010000000000000000000000),
  333. *   (%00000000010100000000010101010101,%11110101010100000000000000000000),
  334. *   (%00000000010000000000000101010101,%11010101010101010000000000000000),
  335. *   (%00000000000000000000000001010101,%01010101010101010100000000000000),
  336. *   (%00000000000000000000000000010101,%01010101010101010000000000000000),
  337. *   (%00000000000000000000000000010101,%01010101010101000000000000000000),
  338. *   (%00000000000000000000000000000101,%01010101010000000000000000000000),
  339. *   (%00000000000000000000000000000001,%01010101000000000000000000000000),
  340. *   (%00000000000000000000000000000000,%01010101000000000000000000000000),
  341. *   (%00000000000000000000000000000000,%01010100000000000000000000000000),
  342. *   (%00000000000000000000000000000000,%00010000000000000000000000000000),
  343. *   (%00000000000000000000000000000000,%00000000000000000000000000000000))'PTR);
  344. *
  345.  
  346.  STRUCTURE E_ClipRect,0
  347.         APTR    ecr_Next
  348.         WORD    ecr_Left
  349.         WORD    ecr_Top
  350.         WORD    ecr_Right
  351.         WORD    ecr_Bottom
  352.         LABEL   ecr_SIZEOF
  353.  
  354.  STRUCTURE E_EMouseImg,0
  355.         BYTE    emi_width
  356.         BYTE    emi_height
  357.         BYTE    emi_xSpot
  358.         BYTE    emi_ySpot
  359.         LABEL   emi_SIZEOF
  360.  
  361.  STRUCTURE  E_EMouse,0
  362.         LONG    emo_Color1
  363.         LONG    emo_Color2
  364.         LONG    emo_Color3
  365.         WORD    emo_XSpot
  366.         WORD    emo_YSpot
  367.         WORD    emo_Width
  368.         WORD    emo_Height
  369.         APTR    emo_Soft
  370.         APTR    emo_Hard
  371.         LABEL   emo_SIZEOF
  372.  
  373. *
  374. *  EScrFlags, EScrFlagSet, EScreen, EScreenPtr, NewEScreen...
  375. *
  376. *  EScreens are structures with capabilities as follows:
  377. *   - Management of resolution mode (EViewPtr)
  378. *   - Management of graphics memory (EBitMap)
  379. *   - Message system for user input
  380. *  Please note that an EScreen is different from the EGSIntui screens, i.e.
  381. *  NO window can be opened on any EScreen; for that purpose an EGSIntui screen
  382. *  must be created.
  383. *
  384. *  EScrFlags
  385. *     SCREENBEHIND : The new screen is opened behind all other screens.
  386. *     OWNBITMAP    : The screen has a user defined BitMap.
  387. *     LACESCREEN   : The screen is to be opened as interlaced to decrease
  388. *                    video line frequency in spite of knowing the flicker
  389. *                    (currently without meaning).
  390. *
  391. *  NewEScreen
  392. *   .Mode          : Name of the selected video mode ending with a null byte.
  393. *   .Depth         : Required bit depth (1, 2, 4, 6, 8, 12, 16 or 24).
  394. *                    Allowed pixel depths depend on the underlying hardware,
  395. *                    and may vary for different screen modes. The suggested
  396. *                    way to retrieve data for supported modes and depths is
  397. *                    by the use of 'E_GetHardInfo'.
  398. *   .Colors        : An own CLUT if required; if NIL the standard CLUT is used.
  399. *   .Map           : Possibly a user BitMap which has to be allocated
  400. *                    previously.
  401. *   .Flags         : Flags for the new screen (only "SCREENBEHIND").
  402. *   .Mouse         : Possibly a user mouse pointer.
  403. *   .EdcmpFlags    : Messages to be sent.
  404. *   .Port          : Possibly an application message port; must be removed
  405. *                    before closing the screen (or crash).
  406. *
  407.  
  408. * Corresponding EScrFlagSet has 32 bits !
  409. E_SCREENBEHIND          EQU     1
  410. E_OWN_BITMAP            EQU     2
  411. E_LACESCREEN            EQU     4
  412.  
  413.  STRUCTURE  E_NewEScreen,0
  414.         APTR    ens_Mode
  415.         UWORD   ens_Depth
  416.         UWORD   ens_Pad_1
  417.         APTR    ens_Colors
  418.         APTR    ens_Map
  419.         ULONG   ens_Flags
  420.         APTR    ens_Mouse
  421.         ULONG   ens_EdcmpFlags
  422.         APTR    ens_Port
  423.         LABEL   ens_SIZEOF
  424.  
  425. *
  426. *  EScreen
  427. *   .Prev,
  428. *   .Next          : Internal chaining.
  429. *   .View          : !!!! PRIVATE !!!!
  430. *   .Map           : Pointer to the screen's BitMap structure.
  431. *   .Colors        : !!!! PRIVATE !!!!
  432. *   .Mouse         : EMouse structure (READ ONLY !!!!).
  433. *   .MouseOn       : !!!! PRIVATE !!!!
  434. *   .EdcmpFlags    : Message flags (READ ONLY !!!).
  435. *   .Port          : Screen's message port.
  436. *   .BackLink      : Link field for users, e.g. used by EGSIntui.
  437. *   .MouseX,
  438. *   .MouseY        : Always the current mouse position on the screen.
  439. *
  440.  STRUCTURE  E_EScreen,0
  441.  
  442.         STRUCT  esc_Node,MLN_SIZE
  443.         APTR    esc_View
  444.         APTR    esc_Map
  445.         APTR    esc_Colors
  446.         APTR    esc_Mouse
  447.         ULONG   esc_Flags
  448.         UBYTE   esc_MouseOn
  449.         UBYTE   esc_Pad_1
  450.         UBYTE   esc_Pad_2
  451.         UBYTE   esc_Pad_3
  452.         ULONG   esc_EdcmpFlags
  453.         APTR    esc_Port
  454.         APTR    esc_BackLink
  455.         WORD    esc_MouseX
  456.         WORD    esc_MouseY
  457.         APTR    esc_EIScreen
  458.         STRUCT  esc_Off,ecr_SIZEOF
  459.         APTR    esc_ModeName
  460.         STRUCT  esc_MouseImg,emi_SIZEOF
  461.         LABEL   esc_SIZEOF
  462.  
  463. *
  464. *  EDCMPFlags, EDCMPFlagSet, EGSMsgPtr, EGSMessage
  465. *
  466. *  Structures for the message system working on the EScreen level.  Thus
  467. *  mouse and character input can be gained without opening a window.
  468. *
  469. *  EDCMPFlags:
  470. *    eMOUSEBUTTONS  : Mouse buttons were pressed
  471. *    eMOUSEMOVE     : Mouse was moved
  472. *    eRAWKEY        : Key code from the keyboard
  473. *    eINTUITICK     : Timer is calling
  474. *    eDISKINSERTED  : Disk was inserted
  475. *    eDISKREMOVED   : Disk was removed
  476. *    eNEWPREFS      : Preferences have been changed
  477. *
  478. *   .Class          : Type of the message
  479. *   .Code           : Message code (refer to  "InputEvents")
  480. *   .Qualifier      : Message code (refer to  "InputEvents")
  481. *   .IAddress       : (For E_eRAWKEY: Pointer to deadkey array )
  482. *   .MouseX,
  483. *   .MouseY         : Mouse position
  484. *   .Second,
  485. *   .Micros         : Event time
  486. *   .EdcmpScreen    : Screen sending the message
  487. *
  488.  
  489. * Corresponding EDCMPFlagSet has 32 bits !
  490. E_eMOUSEBUTTONS         EQU     1
  491. E_eMOUSEMOVE            EQU     2
  492. E_eRAWKEY               EQU     4
  493. E_eTIMETICK             EQU     8
  494. E_eDISKINSERTED         EQU     16
  495. E_eDISKREMOVED          EQU     32
  496. E_eNEWPREFS             EQU     64
  497.  
  498.  STRUCTURE  E_EGSMessage,0
  499.         STRUCT  ems_Msg,MN_SIZE
  500.                                 ; has long word size
  501.         ULONG   ems_Class
  502.         UWORD   ems_Code
  503.         UWORD   ems_Qualifier
  504.         APTR    ems_IAddress
  505.         WORD    ems_MouseX
  506.         WORD    ems_MouseY
  507.         ULONG   ems_Seconds
  508.         ULONG   ems_Micros
  509.         APTR    ems_EdcmpScreen
  510.         LABEL   ems_SIZEOF
  511.  
  512. *
  513. *  ScreenMode, ScreenModePtr
  514. *
  515. *  Information on supported screen modes and depths. The list including
  516. *  these modes is found by 'GetHardInfo'.
  517. *
  518. *   .ln_Name : The name of the mode, for use in 'E_OpenScreen' ...
  519. *   .Horiz     : The horizontal resolution
  520. *   .Vert      : The vertical resolution
  521. *   .Depths    : The supported pixel depths in this mode. Each depth is
  522. *                represented in one bit. E.g. (1<<24) & mode->depths for
  523. *                24 bit.
  524. *
  525.  STRUCTURE  E_ScreenMode,0
  526.         STRUCT  esm_Node,LN_SIZE
  527.         UWORD   esm_Horiz
  528.         UWORD   esm_Vert
  529.         UWORD   esm_Pad
  530.         ULONG   esm_Depths
  531.         APTR    esm_Driver
  532.         STRUCT  esm_Specs,24*4
  533.         LABEL   esm_SIZEOF
  534.  
  535. *
  536. *  To realize the highest possible compatibility between different graphics
  537. *  cards, the library must offer a function giving information about the
  538. *  current card plugged in.  Among these information items are the resolutions
  539. *  that the card implements.
  540. *  That task is carried out by the HardInfo structure and the procedure
  541. *  "GetHardInfo".
  542. *
  543.  
  544. * Corresponding HardInfoFlagSet has 32 bits !
  545.  
  546. E_HARD_BLITTER                  EQU     1
  547. E_HARD_BOOTROM                  EQU     2
  548. E_HARD_VBLANK                   EQU     4
  549. E_HARD_REALMODE                 EQU     8
  550. E_HARD_GAMMACORRECT             EQU     16
  551. E_HARD_PLANES                   EQU     32
  552.  
  553.  STRUCTURE E_MonitorSpec,0
  554.         STRUCT emss_Node,LN_SIZE
  555.         WORD   emss_Pad0
  556.         STRUCT emss_Screens,LH_SIZE
  557.         WORD   emss_Pad1
  558.         ULONG  emss_Sync
  559.         WORD   emss_MinHoriz
  560.         WORD   emss_MaxHoriz
  561.         WORD   emss_MinVerti
  562.         WORD   emss_MaxVerti
  563.         LABEL  emss_SIZEOF
  564.  
  565.  STRUCTURE E_MinMax,0
  566.         WORD   emm_min
  567.         WORD   emm_max
  568.         LABEL  emm_SIZEOF
  569.  
  570.  STRUCTURE E_DisplayDriver,0
  571.         STRUCT edd_Node,LN_SIZE
  572.         WORD   edd_Pad0
  573.         APTR   edd_Prefix
  574.         ULONG  edd_Depths
  575.         STRUCT edd_Freqs,24*emm_SIZEOF
  576.         STRUCT edd_Monitors,MLN_SIZE
  577.         ULONG  edd_Flags
  578.         APTR   edd_Default
  579.         STRUCT edd_MaxPixel,24*4
  580.         ULONG  edd_MemSize
  581.         UWORD  edd_MouseSize
  582.         UWORD  edd_Pad1
  583.         APTR   edd_description
  584.         LABEL  edd_SIZEOF
  585.  
  586.  STRUCTURE  E_HardInfo,0
  587.         APTR    ehi_Product
  588.         APTR    ehi_Manufact
  589.         APTR    ehi_Name
  590.         WORD    ehi_Version
  591.         WORD    ehi_MaxFreq
  592.         ULONG   ehi_Flags
  593.         APTR    ehi_Modes
  594.         WORD    ehi_ActPixClock
  595.         WORD    ehi_frameTime
  596.         APTR    ehi_MemBase
  597.         LONG    ehi_MemSize
  598.         APTR    ehi_LibDate
  599.         APTR    ehi_Drivers
  600.         APTR    ehi_Monitors
  601.         APTR    ehi_VideoNodes
  602.         APTR    ehi_Screen
  603.         LABEL   ehi_SIZEOF
  604.  
  605.         ENDC  ; EGS_EGS_H
  606.